package Year22_Month06.day06;

import java.util.ArrayList;
import java.util.List;

public class 二叉树的层平均值_DFS {
    List<Double> list1 = new ArrayList<>();//记录每一层的总和
    List<Integer> list2 = new ArrayList<>();//记录每一层的长度

    public List<Double> averageOfLevels(TreeNode root) {
        DFS(root,0);
        for (int i = 0; i < list1.size(); i++) {
            //要把每一层的总和除去每一层的元素个数
            list1.set(i, list1.get(i)/list2.get(i));
        }
        return list1;
    }

    public void DFS(TreeNode node,int deepth){
        if(node == null){
            return;
        }
        //这里这样写是为了对于list的调用
        if(deepth  == list1.size()){//如果当前深度等于list1的长度，那么当前遍历就是这个层次的第一个碰到的元素
            list1.add((double) node.val);
            list2.add(1);
        }else{
            list1.set(deepth,list1.get(deepth) + node.val);
            list2.set(deepth, list2.get(deepth)+1);
        }
        DFS(node.left,deepth+1);
        DFS(node.right,deepth+1);
    }
}
